package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import dominio.Proveedor;

public class ProveedorDAO {
	private static String query_buscarProveedor = "from Proveedor p where p.cuil = (:cuil)";
	private static String query_listarProveedores = "from Proveedor p";

	private static ProveedorDAO instancia = null;

	public static ProveedorDAO getInstance() {
		if (instancia == null)
			instancia = new ProveedorDAO();
		return instancia;
	}

	protected ProveedorDAO() {}

	public int guardarProveedor(Proveedor proveedor) {
		Session s = HibernateDAO.getInstance().getSession();
		s.beginTransaction();
		s.saveOrUpdate(proveedor);
		s.getTransaction().commit();
		return proveedor.getId();
	}

	public Proveedor buscarProveedor(String cuil) {
		Session s = HibernateDAO.getInstance().getSession();
		Query query = s.createQuery(query_buscarProveedor);
		query.setParameter("cuil", cuil);
		query.setMaxResults(1);
		Proveedor p = (Proveedor) query.uniqueResult();
		return p;
	}

	@SuppressWarnings("unchecked")
	public List<Proveedor> listarProveedores() {
		Session s = HibernateDAO.getInstance().getSession();
		return s.createQuery(query_listarProveedores).list();
	}
}